package cn.iocoder.yudao.module.iot.service.scene;

import cn.iocoder.yudao.module.iot.dal.dataobject.scene.IotSceneConditionDO;

import java.util.List;

/**
 * 场景定时任务 Service 接口
 *
 * @author 芋道源码
 */
public interface IotSceneTimerService {

    /**
     * 创建场景定时任务
     *
     * @param sceneId 场景ID
     * @param condition 定时条件
     * @return 任务ID
     */
    Long createSceneTimer(Long sceneId, IotSceneConditionDO condition);

    /**
     * 更新场景定时任务
     *
     * @param sceneId 场景ID
     * @param condition 定时条件
     */
    void updateSceneTimer(Long sceneId, IotSceneConditionDO condition);

    /**
     * 删除场景定时任务
     *
     * @param sceneId 场景ID
     */
    void deleteSceneTimer(Long sceneId);

    /**
     * 获取场景的定时条件
     *
     * @param sceneId 场景ID
     * @return 定时条件列表
     */
    List<IotSceneConditionDO> getSceneTimerConditions(Long sceneId);

    /**
     * 同步场景定时任务
     * 根据场景的定时条件创建或更新定时任务
     *
     * @param sceneId 场景ID
     */
    void syncSceneTimer(Long sceneId);

    /**
     * 将时间字符串转换为Cron表达式
     *
     * @param timeStr 时间字符串，格式如 "15:40"
     * @return Cron表达式
     */
    String convertTimeToCron(String timeStr);

    /**
     * 清理旧的定时任务
     * 删除所有以 "iotSceneTimerJob_" 开头的旧格式任务
     */
    void cleanupOldJobs();
} 